package org.esa.snap.rcp.statistics; import com.bc.ceres.binding.Property; import com.bc.ceres.swing.binding.BindingContext; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.Point; import org.esa.snap.core.datamodel.Product; import org.esa.snap.core.datamodel.ProductData; import org.esa.snap.core.datamodel.ProductNode; import org.esa.snap.core.datamodel.VectorDataNode; import org.geotools.feature.simple.SimpleFeatureTypeBuilder; import org.junit.Test; import org.opengis.feature.simple.SimpleFeatureType; import org.opengis.feature.type.AttributeDescriptor; import javax.management.Descriptor; import static org.junit.Assert.*; /** * @author Norman Fomferra */ public class CorrelativeFieldSelectorTest { @Test public void testExpectedProperties() throws Exception { final BindingContext bindingContext = new BindingContext(); try { new CorrelativeFieldSelector(bindingContext); fail(); } catch (IllegalArgumentException expected) { } bindingContext.getPropertySet().addProperties(Property.create("pointDataSource", ProductNode.class)); try { new CorrelativeFieldSelector(bindingContext); fail(); } catch (IllegalArgumentException expected) { } bindingContext.getPropertySet().addProperties(Property.create("pointDataSource", VectorDataNode.class)); try { new CorrelativeFieldSelector(bindingContext); fail(); } catch (IllegalArgumentException expected) { } bindingContext.getPropertySet().addProperties(Property.create("dataField", Descriptor.class)); try { new CorrelativeFieldSelector(bindingContext); fail(); } catch (IllegalArgumentException expected) { } bindingContext.getPropertySet().addProperties(Property.create("dataField", AttributeDescriptor.class)); new CorrelativeFieldSelector(bindingContext); } @Test public void testUpdatePointDataSource() throws Exception { final BindingContext bindingContext = new BindingContext(); bindingContext.getPropertySet().addProperties(Property.create("pointDataSource", VectorDataNode.class)); bindingContext.getPropertySet().addProperties(Property.create("dataField", AttributeDescriptor.class)); final CorrelativeFieldSelector correlativeFieldSelector = new CorrelativeFieldSelector(bindingContext); final Product product = new Product("name", "type", 10, 10); product.getVectorDataGroup().add(new VectorDataNode("a", createFeatureType(Geometry.class))); product.getVectorDataGroup().add(new VectorDataNode("b", createFeatureType(Point.class))); assertEquals(0, correlativeFieldSelector.pointDataSourceList.getItemCount()); assertEquals(0, correlativeFieldSelector.dataFieldList.getItemCount()); correlativeFieldSelector.updatePointDataSource(product); assertEquals(3, correlativeFieldSelector.pointDataSourceList.getItemCount()); assertEquals(0, correlativeFieldSelector.dataFieldList.getItemCount()); correlativeFieldSelector.pointDataSourceProperty.setValue(product.getVectorDataGroup().get("b")); assertEquals(3, correlativeFieldSelector.dataFieldList.getItemCount()); } private SimpleFeatureType createFeatureType(Class binding) { SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder(); builder.setName("featureType"); builder.add("chl", Float.class); builder.add("sst", Double.class); builder.add("time", ProductData.UTC.class); builder.add("point", binding); builder.setDefaultGeometry("point"); return builder.buildFeatureType(); } }